package util;

/**
 * A light-weight class for time counting.
 * 
 * 计时器，用于操作计时的轻量级类。
 * 
 * @author Tianyu Xu
 * 
 */
public class TimeCounter {
	private long startTime;

	/**
	 * Construct a TimeCounter
	 * 
	 * 创建一个计时器
	 * 
	 * @param s
	 *            创建计时器时在标准输出中输出的字符串
	 */
	public TimeCounter(String s) {
		System.out.println(s);
		startTime = System.currentTimeMillis();
	}

	/**
	 * Construct a TimeCounter
	 * 
	 * 创建一个计时器
	 */
	public TimeCounter() {
		startTime = System.currentTimeMillis();
	}

	/**
	 * Stop the TimeCounter and output the information
	 * 
	 * 停用计时器并输出提示信息
	 * 
	 * @return 时间信息
	 */
	public String stop() {
		long t = System.currentTimeMillis() - startTime;
		long h = 0, m = 0;

		// 如果是毫秒级
		if (t < 1000)
			return t + " ms";
		// 如果是秒级
		else if (t < 60000)
			return String.format("%.2f sec", t / 1000.0);
		// 如果是分钟级
		else if (t < 36000000) {
			m = t / 60000;
			t -= m * 60000;
			return m + " min " + t / 1000 + " sec";
		}
		// 如果是小时级
		else {
			h = t / 36000000;
			t -= h * 36000000;
			m = t / 60000;
			t -= m * 60000;
			return h + " h " + m + " min " + t / 1000 + " sec";
		}
	}
}
